// 树的前中后序遍历

// 前序遍历
function preOrder(node) {
    if (!(node == null)) {
        divList.push(node);
        preOrder(node.firstElementChild);
        preOrder(node.lastElementChild);
    }
}

// 中序遍历
function inOrder(node) {
    if (!(node == null)) {
        inOrder(node.firstElementChild);
        divList.push(node);
        inOrder(node.lastElementChild);
    }
}

// 后续遍历
function postOrder(node) {
    if (!(node == null)) {
        postOrder(node.firstElementChild);
        postOrder(node.lastElementChild);
        divList.push(node);
    }
}


//1.深度优先遍历的递归写法
function deepTraversal(node){
    let nodes=[];
    if(node!=null){
        nodes.push[node];
        let childrens=node.children;
        for(let i=0;i<childrens.length;i++)
            deepTraversal(childrens[i]);
    }
    return nodes;
}

//2.深度优先遍历的非递归写法
function deepTraversal(node){
    let nodes=[];
    if(node!=null){
        let stack=[];//同来存放将来要访问的节点
        stack.push(node);
        while(stack.length!=0){
            let item=stack.pop();//正在访问的节点
            nodes.push(item);
            let childrens=item.children;
            for(let i=childrens.length-1;i>=0;i--)//将现在访问点的节点的子节点存入stack，供将来访问
                stack.push(childrens[i]);
        }
    }
    return nodes;
}

//3.广度优先遍历的递归写法
function wideTraversal(node){
    let nodes=[],i=0;
    if(node!=null){
        nodes.push(node);
        wideTraversal(node.nextElementSibling);
        node=nodes[i++];
        wideTraversal(node.firstElementChild);
    }
    return nodes;
}

//4.广度优先遍历的非递归写法
function wideTraversal(node){
    let nodes=[],i=0;
    while(node!=null){
        nodes.push(node);
        node=nodes[i++];
        let childrens=node.children;
        for(let i=0;i<childrens.length;i++){
            nodes.push(childrens[i]);
        }
    }
    return nodes;
}



// 路径之和
// 最近公共祖先
// 二叉树转链表
// 侧面观察二叉树
// 插入位置



// 算法
// 今天要处理是http与https，浏览器缓存
// node也多看看
// vue  简单看下

// 然后分模块处理   1.性能优化（webpack，框架）  2.项目性能检测（利用api与lighthouse）  3.多端

// 记忆背诵 （2 + 2 + 2 + 5 + 1 ）